package test;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class test2 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        ArrayList<Integer> qList=new ArrayList<>();
        int q=scanner.nextInt();//q为行数
        int k;//k为横轴
        for (int i=1;i<=q;i++){
            k=scanner.nextInt();
            qList.add(k);
        }
        //输出查询
        for (int i = 0; i < qList.size(); i++) {
           findNum(qList.get(i));
        }
    }
    public static void findNum(int k){
        int n=queryCount(k);
        int length=queryLength(n);
        List list = func(length);
        k=k-(2*(n-1)*(n-1)-(n-1));//新的k值
        for (int i = 0; i < list.size(); i++) {
            if (i==k){
                System.out.println(list.get(i));
            }
        }
    }

    public static List func(int length) {//根据length生成单个函数图（集合）
        ArrayList<Integer> numList=new ArrayList<>();
        int num = 0;
        for (int i=0;i<length;i++){
            if (i==1||i==(length+1)/2||i==length){
                num=0;
            }
            if (1<i&&i<=(length-1)/4+1){//第一段
                num=i-1;
            }
            if ((length-1)/4+1<=i&&i<(length+1)/2){//第二段
                num=(length+1)/2-i;
            }
            if (i>(length+1)/2&&i<3*(length-1)/4+1){//第三段
                num=(length+1)/2-i;
            }
            if (i>=3*(length-1)/4+1&&i<length){//第四段
                num=i-length;
            }
            numList.add(num);
        }
        return numList;
    }
    public static int queryCount(int k){//计算是第几个集合n
        int n=1;//n为猜想第几个集合
        while(true){
            if (2*n*n-n>k){
                break;
            }
            else {
                n++;
            }
        }
        return n;
    }
    public static int queryLength(int n){//计算该集合的有几个元素length
        int length=4*(n-1)+1;
        return length;
    }

}
